package com.yifeng.servlet;

import com.yifeng.common.Result;
import com.yifeng.factory.ServiceFactory;
import com.yifeng.service.NewsService;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/news/detail")
public class NewsDetailServlet extends BaseServlet {

    /*
    负责人：xiaoq

    功能：通过服务工厂获取 NewsService 实例，用于调用查询新闻详情的业务方法

    参数：无

    返回值:无
    */
    private final NewsService newsService = ServiceFactory.getNewsService();

    /*
    负责人：xiaoq

    功能：处理前台新闻详情请求，从 URL 参数中获取 newsId，校验其为正整数后调用服务层查询已发布的新闻详情并返回 JSON 响应

    参数：req - HTTP 请求对象，需包含 newsId 查询参数；resp - HTTP 响应对象

    返回值:无（通过 writeJson 直接输出 Result 封装的新闻详情或错误信息）
    */
    @Override
    protected void doHandle(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String newsId = req.getParameter("newsId");

        //从URL中获取newsID
        if(newsId == null || newsId.trim().isEmpty()){
            fail(resp,"新闻ID不能为空");
            return;
        }

        //校验是否是正整数
        int id;
        try{
            id = Integer.parseInt(newsId);
            if(id<=0) {
                fail(resp, "新闻ID必须是正整数");
                return;
            }
        } catch(NumberFormatException e){
            fail(resp,"新闻ID格式错误，必须是数字");
            return;
        }

        //调用服务层查询已发布的新闻详情
        try{
            Result result=newsService.getNewsDetailById(id);
        } catch (Exception e){
            fail(resp,"获取新闻详情失败:"+e.getMessage());
        }
    }
}